use redis;

use std::collections::HashMap;
#[warn(non_snake_case)]
#[warn(unused_must_use)]
fn main() {
    println!("Hello, world!");
    match do_redis_code() {
        Err(err) => {
            println!("无法执行示例：");
            println!("  {}: {}", err.category(), err);
        }
        Ok(()) => {}
    }
}
fn do_redis_code() -> redis::RedisResult<()> {
    let client = redis::Client::open("redis://:qwer.1324@127.0.0.1:3022")?;
    let mut con = client.get_connection()?;
    do_print_max_entry_limits(&mut con)
}
fn do_print_max_entry_limits(con: &mut redis::Connection) -> redis::RedisResult<()> {
    // 因为 rust 不知道我们真正想要什么格式，所以我们需要在这里明确并定义我们响应的类型。在这种情况下， String -> int 适合我们查询的所有项目。
    let config: HashMap<String, isize> = redis::cmd("CONFIG")
        .arg("GET")
        .arg("*-max-*-entries")
        .query(con)?;

    println!("最大进入限制：");

    println!(
        "  max-intset:        {}",
        config.get("set-max-intset-entries").unwrap_or(&0)
    );
    println!(
        "  hash-max-ziplist:  {}",
        config.get("hash-max-ziplist-entries").unwrap_or(&0)
    );
    println!(
        "  list-max-ziplist:  {}",
        config.get("list-max-ziplist-entries").unwrap_or(&0)
    );
    println!(
        "  zset-max-ziplist:  {}",
        config.get("zset-max-ziplist-entries").unwrap_or(&0)
    );

    Ok(())
}
